Whisper Isle 遊戲連結(PC Only):whisperisle.app(註:專案每日持續高速推進,撰文當下線上已推進至 v0.2.3)
昨天在 Day 7 聊到了人形角色的 2.5D 等距 Sprite 產線:從 Meshy 裸模、Mixamo 套骨架動作,再到 Blender Headless 自動化批渲與 WebP 打包,我們成功把騎士、法師、獵人(以及後續的盜賊)等職業送上了流水線。當人形角色的流水線順利運轉時,身為開發者,心裡通常會產生一種樂觀的錯覺:既然這套工具鏈這麼順手,那做怪物應該也大同小異吧?
於是在開工後的第二個週末(2026-07-12),我們準備將第一隻野外怪物——野狼(Wolf)帶進遊戲世界。然而,當我把狼的 3D 模型丟進 AI 工具鏈時,迎面撞上的卻是一堵冰冷厚重的高牆:Meshy AI 生成與自動綁骨服務,在四足動物領域近乎死路一條。
Mixamo 徹底缺席:Mixamo 是 Adobe 旗下的老牌服務,它的底層演算法只認標準人形雙足骨架(兩隻手、兩隻腳、一顆頭)。把一隻四足野狼的 FBX 上傳上去,系統只會跳出錯誤,或者試圖把前腳當成手臂、把後腿當成雙腿,把狼扭曲成一隻站在地上的畸形直立怪物。
Meshy Quadruped rig 半殘:Meshy 雖然有 Quadruped(四足)的實驗性綁骨功能,但它的動作庫裡只有一組 Walking(走路)動畫。沒有待機(Idle)、沒有撲咬攻擊(Attack)、沒有受擊硬直(Hit Reaction)、沒有死亡倒地(Dead)。一隻在 MMO 世界裡只能往前走、不能停下、不能咬人、也不能被殺死的狼,在遊戲邏輯中是不可用的。
- Meshy Quadruped rig 實測動畫庫僅 walking(缺攻/受擊/死),Mixamo 僅人形無備援 → 四足走 Meshy 動畫=死路
- 拍板:狼=靜態 GLB → bpy 腳本自建骨架+自動權重+手寫關鍵幀五組 → 既有渲染管線
曾經短暫考慮過第三條路:去 Unity Asset Store 或 Sketchfab 買現成的四足動物動作包。
但在專案初期,我們曾經用過一個公牛(Bull)資產包,試圖透過微調 Mesh 把它改造成野豬。結果證明這是一場災難:買來的專業模型,其骨架配重與動作細節是緊密咬合的,任何局部的換皮或微雕都會導致蒙皮崩潰與關節穿模。更嚴重的問題是世界觀風格割裂。
沒有現成工具可用,也不打算妥協買包。剩下的唯一選擇,就是自己動手:只用 Meshy 生成靜態狼身模型,骨架、權重與全部五組動畫,全部在 Blender 裡用 Python 腳本手寫算出來。
要讓一隻靜態的 3D 狼動起來,第一步是給它植入骨架(Rigging)並綁定皮肉權重(Skinning)。在 Blender 裡,最成熟的骨架系統是自帶的 Rigify 插件,裡面有一套標準的 wolf metarig。但把 Meshy 輸出的隨機網格自動對位到標準骨架上,難度遠超想像。
這在靜態展示時很漂亮,但進到綁骨管線就是一場噩夢。骨架綁定要求模型處於幾何中立姿態(Neutral Rest Pose)。如果狼在初始狀態就弓著背、尾巴貼著大腿,當骨架套上去時,尾巴的骨頭會把大腿的肉一起帶走,走起路來尾巴和大腿黏成一團。
這隻狼在審計第一階段就被直接報廢。我們在 tools/art/style-guide.md 裡為所有四足模型立下了**「Rig 友善姿勢四條硬規格」**,並寫進了圖像生成的 Prompt 尾綴中:
Claude Code 改走體素代理殼(Voxel Remesh Proxy)權重法:先將高模複製一份,進行粗糙的體素重構,封閉內部所有自相交漏洞,形成一個乾淨的閉合外殼,對乾淨的外殼跑熱擴散權重。再透過表面最近鄰演算法(Data Transfer),將代理殼上的平滑權重投影回原始高模上。骨架加入 preserve_volume(雙四元數蒙皮,Dual Quaternion Skinning),徹底解決四足奔跑時肘關節與膝關節像擰毛巾一樣塌陷萎縮的問題。權重覆蓋率從 0/42 瞬間拉升到了 28/42 核心骨全覆蓋,狼的身體終於擁有了可以被程序操控的肌肉與骨骼。
有了骨架,接下來是最艱難的一步:怎麼用代碼讓這隻狼自然地動起來?Claude Code 透過 Blender 的 Python API,直接操控 Rigify 的 IK(逆向運動學)控制器與 FK 旋轉軸,從零手寫了五組核心動作的關鍵幀。
每個足部週期分為兩段:
角色會走動了,野狼會撲咬了,戰鬥系統在畫布上初具雛形。但當你操控著角色在地圖上移動時,你的目光很快就會被螢幕邊緣的東西吸引——那就是血條、經驗條、快捷欄與等級標籤:遊戲的 HUD(Heads-Up Display)介面。